#include <iostream>
#include <unordered_map>
#include <vector>
#include <random>

using namespace std;

class RandomizedSet {
private:
    unordered_map<int, int> numToIndex; 
    vector<int> nums; 

public:
    RandomizedSet() { }

    bool insert(int val) {
        if (numToIndex.count(val)) {
            return false;
        }

        numToIndex[val] = nums.size();
        nums.push_back(val);
        return true;
    }

    bool remove(int val) {
        if (!numToIndex.count(val)) {
            return false; 
        }

        int index = numToIndex[val];
        numToIndex[nums.back()] = index; 
        nums[index] = nums.back();
        nums.pop_back(); 
        numToIndex.erase(val); 
        return true;
    }

    int getRandom() {
        random_device rd; 
        mt19937 gen(rd()); 
        uniform_int_distribution<int> dis(0, nums.size() - 1);
        return nums[dis(gen)]; 
    }
};

int main() {
    RandomizedSet set;

    set.insert(1);
    set.insert(2);
    set.insert(3);
    set.insert(4);
    set.insert(5);

    cout << "随机获取的元素：" << set.getRandom() << endl;

    set.remove(3);

    cout << "随机获取的元素：" << set.getRandom() << endl;

    return 0;
}